package Offer5906;

/**
 * 力扣10.24周赛：
 * 句子中的有效单词数
 * 句子仅由小写字母（'a' 到 'z'）、数字（'0' 到 '9'）、连字符（'-'）、标点符号（'!'、'.' 和 ','）以及空格（' '）组成。
 * 每个句子可以根据空格分解成 一个或者多个 token ，这些 token 之间由一个或者多个空格 ' ' 分隔。
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Solution().countValidWords("cat and  dog"));
    }
}

/**
 * 正则表达式 双一百
 */
class Solution {
    public int countValidWords(String sentence) {
        int res = 0;
        String[] split = sentence.split(" ");
        for (String s : split) {
            if ("!".equals(s) || ".".equals(s) || ",".equals(s)) {
                res++;
            } else if (s.matches("^[a-z]+(-?[a-z]+)?(!|\\.|,)?$")) {
                res++;
            }
        }
        return res;
    }
}